// app.js
App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 检查用户登录状态
    this.checkLoginStatus();
  },
  
  // 检查用户登录状态
  checkLoginStatus() {
    // 检查是否有token
    const token = wx.getStorageSync('token');
    if (token) {
      this.globalData.isLoggedIn = true;
    }
    
    // 从本地存储获取用户信息
    const userInfo = wx.getStorageSync('userInfo');
    if (userInfo) {
      this.globalData.userInfo = userInfo;
      this.globalData.hasUserInfo = true;
    }
  },
  
  // 计算空气质量得分
  calculateAirQualityScore(data) {
    // 这里是一个简单的模拟算法，实际项目中应根据专业标准计算
    let score = 100;
    
    // 温度影响（20-25℃最佳）
    const tempVal = parseFloat(data.temperature);
    if (tempVal < 18 || tempVal > 28) {
      score -= 5;
    } else if (tempVal < 20 || tempVal > 25) {
      score -= 2;
    }
    
    // 湿度影响（40-60%最佳）
    const humidityVal = parseFloat(data.humidity);
    if (humidityVal < 30 || humidityVal > 70) {
      score -= 5;
    } else if (humidityVal < 40 || humidityVal > 60) {
      score -= 2;
    }
    
    // CO2影响（<800ppm最佳）
    const co2Val = parseFloat(data.co2);
    if (co2Val > 1000) {
      score -= 15;
    } else if (co2Val > 800) {
      score -= 5;
    }
    
    // PM2.5影响（<35μg/m³最佳）
    const pm25Val = parseFloat(data.pm25);
    if (pm25Val > 75) {
      score -= 25;
    } else if (pm25Val > 35) {
      score -= 15;
    }
    
    // 甲醛影响（<0.08mg/m³最佳）
    const formaldehydeVal = parseFloat(data.formaldehyde);
    if (formaldehydeVal > 0.1) {
      score -= 20;
    } else if (formaldehydeVal > 0.08) {
      score -= 10;
    }
    
    // 确保分数在0-100之间
    return Math.max(0, Math.min(100, Math.round(score)));
  },
  
  // 获取空气质量等级
  getAirQualityLevel(score) {
    if (score >= 90) return '优';
    if (score >= 80) return '良';
    if (score >= 70) return '中等';
    if (score >= 60) return '一般';
    if (score >= 50) return '较差';
    return '差';
  },
  
  globalData: {
    userInfo: null,
    hasUserInfo: false,
    isLoggedIn: false,
    token: null,
    eventChannel: {
      listeners: {},
      emit: function(eventName, data) {
        const listeners = this.listeners[eventName] || [];
        listeners.forEach(callback => callback(data));
      },
      on: function(eventName, callback) {
        if (!this.listeners[eventName]) {
          this.listeners[eventName] = [];
        }
        this.listeners[eventName].push(callback);
      }
    }
  }
})
